package com.txd.javase.exception;

public class ExceptionTest01 {
    /**
     * 一般不建议在main方法上使用throws，因为这个异常如果真正发生了，一定会抛给JVM，JVM只会终止程序。
     * 异常处理机制的作用是增强程序的健壮性。怎么做到呢？就是异常发生了也不是很大影响整个程序的继续执行。
     * 所以，一般main方法中的异常建议使用try/catch进行捕捉。main方法就不再上抛给JVM。
     *
     * 注意: 只要异常没有捕捉，采用上报的方式，此方法的后续代码不会执行。
     *      try语句块中的某一行出现异常，改行后面的代码不会执行。
     *
     * 在以后的开发中，处理异常时，是选择上报还是捕捉呢？
     *      如果希望调用者来处理(或者自己处理不了)，选择throws上报。
     *
     * @param args
     * @throws ClassNotFoundException
     */
    public static void main(String[] args) throws ClassNotFoundException {
        // 有两种方式处理调用该方法可能出现的异常
        // 1. Add exception to method signature
        // (向上抛出异常的时候可以抛出函数签名中的异常或者是该异常的父类，但是这种处理异常
        // 不是很好，应该是异常要进行精确的处理！！！！)
        // 处理异常的第一种方法是: 在方法声明的位置上使用throws关键字抛出
        // 谁调用我这个方法，我就抛给谁，抛给调用者来处理。
        // 这种处理异常的态度: 上报。
        // 2. Surround with try/catch
        // 使用try/catch语句对异常进行捕捉并处理。
        // 异常在此处处理了，不再上抛了。
        doSomething();
    }

    public static void doSomething() throws ClassNotFoundException {
        System.out.println("Do Something!!!!");
    }
}
